package com.bw.goods.utils;

import org.springframework.web.multipart.MultipartFile;

import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.UUID;

public class FileUploadUtil {


    //url上传路径  F:\nginx\nginx-1.12.2\html\images
    public static String uploadFile(MultipartFile file, String url){
        //获取文件名称
        String filename = file.getOriginalFilename();
        //得到一个uuid随机的字符串
        String uuid = UUID.randomUUID().toString();
        //uuid和文件的后缀名称拼接得到一个新的文件名称
        String newFileName = uuid+ filename.substring(filename.lastIndexOf("."));
        //根据需要上传的路径创建一个文件
        File f1 = new File(url);
        //判断文件是否存在
        if(!f1.exists()){
            System.out.println("文件夹不存在，需要创建");
            //mkdirs创建多级文件夹
            f1.mkdirs();
        }
        //根据文件夹和新的文件拼接成一个新的文件
        String fileUrl = url+"/"+newFileName;
        File f = new File(fileUrl);
        try{
            //将源文件拷贝到目标文件中
            file.transferTo(f);
        }catch (Exception e){
            e.printStackTrace();
        }
        //uuid和文件的后缀名称拼接得到一个新的文件名称  http://localhost:801/images/+name
        return newFileName;
    }


   /* public static ResponseEntity downloadFile(String url,String fileName){
        try{
            FileInputStream inputStream = new FileInputStream(url + "/" + fileName);
           // int available = inputStream.available();
            byte[] buff=new byte[inputStream.available()];
            inputStream.read(buff);
            //
            fileName=new String(fileName.getBytes("gbk"),"iso-8859-1");
            HttpHeaders headers=new HttpHeaders();
            headers.add("Content-Disposition", "attachment;filename="+fileName);
            HttpStatus statusCode=HttpStatus.OK;
            ResponseEntity<byte[]> responseEntity=new ResponseEntity<>(buff,headers,statusCode);
            return responseEntity;
        }catch (Exception e){
            e.printStackTrace();
            return null;
        }*/


    //java 通过url下载图片保存到本地
    //String fileUrl, 图片地址
    // String saveUrl  保存地址 C:\Users\ht\Desktop\上课思路整理
    public static String downloadFile(String fileUrl,String saveUrl) {
        HttpURLConnection httpUrl = null;
        byte[] buf = new byte[1024];
        int size = 0;
        try {
            //下载的地址
            URL url = new URL(fileUrl);
            //支持http特定功能
            httpUrl = (HttpURLConnection) url.openConnection();
            httpUrl.connect();
            //缓存输入流,提供了一个缓存数组,每次调用read的时候会先尝试从缓存区读取数据
            BufferedInputStream bis = new BufferedInputStream(httpUrl.getInputStream());
            File file = new File(saveUrl);
            //判断文件夹是否存在
            if(!file.exists()){
                file.mkdir();//如果不存在就创建一个文件夹
            }
            //讲http上面的地址拆分成数组,
            String arrUrl[] = fileUrl.split("/");
            //输出流,输出到新的地址上面
            FileOutputStream fos = null;
            try {
                fos = new FileOutputStream(saveUrl+"/"+arrUrl[arrUrl.length-1]);
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }
            while ((size = bis.read(buf)) != -1){
                fos.write(buf, 0, size);
            }
            //记得及时释放资源
            fos.close();
            bis.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        httpUrl.disconnect();
        return null;
    }
}
